﻿var Proyecto_Controller =
{
    InitGrid:
    function Proyecto_Controller_InitGrid() 
    {
        var grid =
        {
            Target: "divGridProyecto",
            TableId: "gridProyecto",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Nombre", DataField: "Nombre",  Width: "150px", StyleCss: CssWeb.FormatText},
                { Header: "Descripcion", DataField: "Descripcion", StyleCss: CssWeb.FormatText },
                { Header: "Origen", DataField: "Origen", Width: "150px", StyleCss: CssWeb.FormatText },
                { Header: "Moneda", DataField: "Moneda", Width: "90px", StyleCss: CssWeb.FormatText },
                { Header: "Fecha Inicio <br/> Proyectado", DataField: "FechaInicioEstimado", Width: "90px", StyleCss: CssWeb.FormatCenter },
                { Header: "Fecha Fin <br/> Proyectado", DataField: "FechaFinEstimado", Width: "90px", StyleCss: CssWeb.FormatCenter },
                { Header: "Fecha Inicio <br/> Real", DataField: "FechaInicioReal", Width: "90px", StyleCss: CssWeb.FormatCenter },
                { Header: "Fecha Fin <br/> Real", DataField: "FechaFinReal", Width: "90px", StyleCss: CssWeb.FormatCenter },
                { Header: "Estado", DataField: "Estado", Width: "80px", StyleCss: CssWeb.FormatCenter }
            ],
            ShowPaging: DatosControles.GridJSON_ShowPagging,
            ChooseShowPaging: DatosControles.GridJSON_ChoosePagging,
            TotalRecords: 0,
            PageIndex: 1,
            OrderBy: "Nombre Asc",
            FunctionLoadGrid: Proyecto_Controller.ListarGridJSON,
            FunctionExportToExcel: Proyecto_Controller.ExportarExcelGrid,
            ButtonsActionRecord:
            [
                { styleCss: CssWeb.GridJSON_IconEdit, toolTip: DatosControles.GridJSON_ToolTipEditar, functionAction: Proyecto_Controller.EditarRegistro }
            ]
        };

        Proyecto_Controller.Grid = grid;
    },

    Grid: {},

    GetRegistroBusqueda:
    function Proyecto_Controller_GetRegistroBusqueda() 
    {
        var registroBusqueda = 
        {
            Nombre: $("#txtNombre").val().trim(),
            OrigenId: $("#ddlOrigen").val(),
            EstadoId: $("#ddlEstado").val(),
            TipoBusquedaFecha: $("#ddlFecha").val(),
            FechaInicioEstimado: $("#txtFechaInicio").val().trim(),
            FechaFinEstimado: $("#txtFechaFin").val().trim()
        };

        return registroBusqueda;
    },


    ListarGridJSON:
    function Proyecto_Controller_ListarGridJSON(orderBy, cantidadMostrar, paginaActual) 
    {
        Proyecto_Controller.Grid.ChooseShowPaging = cantidadMostrar;
        Proyecto_Controller.Grid.PageIndex = paginaActual;
        Proyecto_Controller.Grid.OrderBy = orderBy;

        Proyecto_Controller.ListarGridPaging();
    },

    ValidarConsultarProyectos:
    function Proyecto_Controller_ValidarConsultarProyectos() 
    {
        if (!Global_UI.ValidationGroupJquery("formProyectos")) return false;

        if (!Global_UI.ValidarRangoFechas("txtFechaInicio","txtFechaFin"))  return false;

        return true;
    },

    ListarGridPaging:
    function Proyecto_Controller_ListarGridPaging() 
    {
        Global_UI.BlockUI(true);

        if(!Proyecto_Controller.ValidarConsultarProyectos())
        {
            Global_UI.BlockUI(false);
            return;
        }

        var registroBusqueda = Proyecto_Controller.GetRegistroBusqueda();

        Global_UI.AjaxPOST
        (
            "ConsultarProyectos.aspx/Listar",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                paginaActual: Proyecto_Controller.Grid.PageIndex,
                cantidadMostrar: Proyecto_Controller.Grid.ChooseShowPaging,
                orderBy: Proyecto_Controller.Grid.OrderBy
            }),
            Proyecto_Controller.ListarGridPaging_CallBack
        );
    },

    ListarGridPaging_CallBack:
    function Proyecto_Controller_ListarGridPaging_CallBack(response) 
    {
        var view = response.d;

        Proyecto_Controller.Grid.TotalRecords = view.TotalRegistros;

        GridJSON.DataBind(Proyecto_Controller.Grid, view.Proyectos);

        Global_UI.BlockUI(false);
    },

    ExportarExcelGrid:
    function Proyecto_Controller_ExportarExcelGrid() 
    {
        Global_UI.BlockUI(true);

        var registroBusqueda = Proyecto_Controller.GetRegistroBusqueda();

        Global_UI.AjaxPOST
        (
            "ConsultarProyectos.aspx/ExportarExcel",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                gridFields: Proyecto_Controller.Grid.Fields
            }),
            Proyecto_Controller.ExportarExcelGrid_CallBack
        );
    },

    ExportarExcelGrid_CallBack:
    function Proyecto_Controller_ExportarExcelGrid_CallBack(response) 
    {
        Global_UI.MostrarExportacionExcel(response.d);

        Global_UI.BlockUI(false);
    },

    EditarRegistro:
    function Proyecto_Controller_EditarRegistro(id) 
    {
        Global_UI.BlockUI(true);

        Global_UI.ResponseRedirect("RegistrarProyecto.aspx?Id=" + id);
    },

    GrabarRegistro:
    function Proyecto_Controller_GrabarRegistro() 
    {
        if (!Global_UI.ValidationGroupJquery("formProyecto")) return false;
        
        Global_UI.BlockUI(true);

        var registro =
        {
            Id: $("#hiddenId").val(),
            Nombre: $("#txtNombre").val(),
            OrigenId: $("#ddlOrigen").val(),
            MonedaId: $("#ddlMoneda").val(),
            UsuarioJefeProyectoId: $("#ddlJefeProyecto").val(),
            EstadoId: $("#ddlEstado").val(),
            FechaInicioEstimado: $("#lblFechaInicioEstimado").html(),
            FechaFinEstimado: $("#lblFechaFinEstimado").html(),
            FechaInicioReal: $("#lblFechaInicioReal").html(),
            FechaFinReal: $("#lblFechaFinReal").html(),
            Descripcion: $("#txtDescripcion").val().trim()
        };

        Global_UI.AjaxPOST
        (
            "RegistrarProyecto.aspx/Grabar",
            JSON.stringify
            ({
                registro: registro
            }),
            Proyecto_Controller.GrabarRegistro_CallBack
        );
    },

    GrabarRegistro_CallBack:
    function Proyecto_Controller_GrabarRegistro_CallBack(response) 
    {
        var registro = response.d;

        $("#hiddenId").val(registro.Id);

        Global_UI.BlockUI(false);

        Global_UI.Alert
        (
            MensajesUsuario.RegistroSatisfactorio,
            MensajesUsuario.TituloMensajeSistema
        );
    }
};

var ConsultarProyectos_ASPX =
{
    Load:
    function ConsultarProyectos_ASPX_Load() 
    {
        Global_UI.BlockUI(true);

        var txtFechaInicio = $("#txtFechaInicio");
        txtFechaInicio.attr("regularexpression",RegularExpression.Fecha);
        txtFechaInicio.attr("messageregex",MensajesUsuario.FechaInvalida);
        Global_UI.Datepicker(txtFechaInicio.attr("id"));

        var txtFechaFin = $("#txtFechaFin");
        txtFechaFin.attr("regularexpression",RegularExpression.Fecha);
        txtFechaFin.attr("messageregex",MensajesUsuario.FechaInvalida);
        Global_UI.Datepicker(txtFechaFin.attr("id"));

        $("#btnConsultar").click(function () { return Proyecto_Controller.ListarGridPaging(); });
        $("#btnNuevo").click(function () { Global_UI.BlockUI(true);Global_UI.ResponseRedirect("RegistrarProyecto.aspx"); });

        Proyecto_Controller.InitGrid();
        Proyecto_Controller.ListarGridPaging();
    }
};

var RegistrarProyecto_ASPX =
{
    Load:
    function RegistrarProyecto_ASPX_Load() 
    {         
        $("#btnGrabar").click(function () { Proyecto_Controller.GrabarRegistro(); });
        $("#btnCancelar").click
        (
            function ()
            {
                Global_UI.Confirm
                (
                     MensajesUsuario.AbandonarPagina,
                     MensajesUsuario.TituloMensajeSistema,
                     function() { Global_UI.ResponseRedirect("ConsultarProyectos.aspx"); }
                );
            }
        );
    }
};